<!DOCTYPE html><html lang="zh-CN" data-theme="light"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0,viewport-fit=cover"><title>C/C++：随机数生成 | Fusyōn.</title><meta name="author" content="i4N"><meta name="copyright" content="i4N"><meta name="format-detection" content="telephone=no"><meta name="theme-color" content="#ffffff"><meta name="description" content="1. C-style12345678910#include &lt;iostream&gt;#include &lt;ctime&gt;int Generate_RandomNumber()&#123;	srand(time(0));	int num &#x3D; rand()%100 + 1;		return num&#125;  srand() 用于生成伪随机数生成器 PRNG 的种子，不同的种子会生">
<meta property="og:type" content="article">
<meta property="og:title" content="C&#x2F;C++：随机数生成">
<meta property="og:url" content="http://jav1ki4n.github.io/2025/10/12/C%20%E4%B8%8E%20C++%20%E9%9A%8F%E6%9C%BA%E6%95%B0%E7%94%9F%E6%88%90/index.html">
<meta property="og:site_name" content="Fusyōn.">
<meta property="og:description" content="1. C-style12345678910#include &lt;iostream&gt;#include &lt;ctime&gt;int Generate_RandomNumber()&#123;	srand(time(0));	int num &#x3D; rand()%100 + 1;		return num&#125;  srand() 用于生成伪随机数生成器 PRNG 的种子，不同的种子会生">
<meta property="og:locale" content="zh_CN">
<meta property="og:image" content="http://jav1ki4n.github.io/img/i4N.png">
<meta property="article:published_time" content="2025-10-11T16:39:32.613Z">
<meta property="article:modified_time" content="2025-10-12T07:23:02.332Z">
<meta property="article:author" content="i4N">
<meta property="article:tag" content="embedded,STM32">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="http://jav1ki4n.github.io/img/i4N.png"><script type="application/ld+json">{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "C/C++：随机数生成",
  "url": "http://jav1ki4n.github.io/2025/10/12/C%20%E4%B8%8E%20C++%20%E9%9A%8F%E6%9C%BA%E6%95%B0%E7%94%9F%E6%88%90/",
  "image": "http://jav1ki4n.github.io/img/i4N.png",
  "datePublished": "2025-10-11T16:39:32.613Z",
  "dateModified": "2025-10-12T07:23:02.332Z",
  "author": [
    {
      "@type": "Person",
      "name": "i4N",
      "url": "http://jav1ki4n.github.io"
    }
  ]
}</script><link rel="shortcut icon" href="/img/favicon.png"><link rel="canonical" href="http://jav1ki4n.github.io/2025/10/12/C%20%E4%B8%8E%20C++%20%E9%9A%8F%E6%9C%BA%E6%95%B0%E7%94%9F%E6%88%90/index.html"><link rel="preconnect" href="//cdn.jsdelivr.net"/><link rel="preconnect" href="//busuanzi.ibruce.info"/><link rel="stylesheet" href="/css/index.css?v=5.5.1"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@7.1.0/css/all.min.css"><script>
    (() => {
      
    const saveToLocal = {
      set: (key, value, ttl) => {
        if (!ttl) return
        const expiry = Date.now() + ttl * 86400000
        localStorage.setItem(key, JSON.stringify({ value, expiry }))
      },
      get: key => {
        const itemStr = localStorage.getItem(key)
        if (!itemStr) return undefined
        const { value, expiry } = JSON.parse(itemStr)
        if (Date.now() > expiry) {
          localStorage.removeItem(key)
          return undefined
        }
        return value
      }
    }

    window.btf = {
      saveToLocal,
      getScript: (url, attr = {}) => new Promise((resolve, reject) => {
        const script = document.createElement('script')
        script.src = url
        script.async = true
        Object.entries(attr).forEach(([key, val]) => script.setAttribute(key, val))
        script.onload = script.onreadystatechange = () => {
          if (!script.readyState || /loaded|complete/.test(script.readyState)) resolve()
        }
        script.onerror = reject
        document.head.appendChild(script)
      }),
      getCSS: (url, id) => new Promise((resolve, reject) => {
        const link = document.createElement('link')
        link.rel = 'stylesheet'
        link.href = url
        if (id) link.id = id
        link.onload = link.onreadystatechange = () => {
          if (!link.readyState || /loaded|complete/.test(link.readyState)) resolve()
        }
        link.onerror = reject
        document.head.appendChild(link)
      }),
      addGlobalFn: (key, fn, name = false, parent = window) => {
        if (!false && key.startsWith('pjax')) return
        const globalFn = parent.globalFn || {}
        globalFn[key] = globalFn[key] || {}
        globalFn[key][name || Object.keys(globalFn[key]).length] = fn
        parent.globalFn = globalFn
      }
    }
  
      
      const activateDarkMode = () => {
        document.documentElement.setAttribute('data-theme', 'dark')
        if (document.querySelector('meta[name="theme-color"]') !== null) {
          document.querySelector('meta[name="theme-color"]').setAttribute('content', '#0d0d0d')
        }
      }
      const activateLightMode = () => {
        document.documentElement.setAttribute('data-theme', 'light')
        if (document.querySelector('meta[name="theme-color"]') !== null) {
          document.querySelector('meta[name="theme-color"]').setAttribute('content', '#ffffff')
        }
      }

      btf.activateDarkMode = activateDarkMode
      btf.activateLightMode = activateLightMode

      const theme = saveToLocal.get('theme')
    
          theme === 'dark' ? activateDarkMode() : theme === 'light' ? activateLightMode() : null
        
      
      const asideStatus = saveToLocal.get('aside-status')
      if (asideStatus !== undefined) {
        document.documentElement.classList.toggle('hide-aside', asideStatus === 'hide')
      }
    
      
    const detectApple = () => {
      if (/iPad|iPhone|iPod|Macintosh/.test(navigator.userAgent)) {
        document.documentElement.classList.add('apple')
      }
    }
    detectApple()
  
    })()
  </script><script>const GLOBAL_CONFIG = {
  root: '/',
  algolia: undefined,
  localSearch: undefined,
  translate: {"defaultEncoding":2,"translateDelay":0,"msgToTraditionalChinese":"繁","msgToSimplifiedChinese":"簡"},
  highlight: {"plugin":"highlight.js","highlightCopy":true,"highlightLang":true,"highlightHeightLimit":false,"highlightFullpage":false,"highlightMacStyle":true},
  copy: {
    success: '复制成功',
    error: '复制失败',
    noSupport: '浏览器不支持'
  },
  relativeDate: {
    homepage: false,
    post: false
  },
  runtime: '',
  dateSuffix: {
    just: '刚刚',
    min: '分钟前',
    hour: '小时前',
    day: '天前',
    month: '个月前'
  },
  copyright: undefined,
  lightbox: 'null',
  Snackbar: undefined,
  infinitegrid: {
    js: 'https://cdn.jsdelivr.net/npm/@egjs/infinitegrid@4.12.0/dist/infinitegrid.min.js',
    buttonText: '加载更多'
  },
  isPhotoFigcaption: false,
  islazyloadPlugin: false,
  isAnchor: false,
  percent: {
    toc: true,
    rightside: false,
  },
  autoDarkmode: false
}</script><script id="config-diff">var GLOBAL_CONFIG_SITE = {
  title: 'C/C++：随机数生成',
  isHighlightShrink: false,
  isToc: true,
  pageType: 'post'
}</script><meta name="generator" content="Hexo 8.0.0"></head><body><div class="post" id="body-wrap"><header class="post-bg fixed" id="page-header" style="background-image: url(/img/bck.png);"><nav id="nav"><span id="blog-info"><a class="nav-site-title" href="/"><img class="site-icon" src="/img/i4N_small.png" alt="Logo"><span class="site-name">Fusyōn.</span></a><a class="nav-page-title" href="/"><span class="site-name">C/C++：随机数生成</span><span class="site-name"><i class="fa-solid fa-circle-arrow-left"></i><span>  返回首页</span></span></a></span><div id="menus"></div></nav><div id="post-info"><h1 class="post-title">C/C++：随机数生成</h1><div id="post-meta"><div class="meta-firstline"><span class="post-meta-date"><i class="far fa-calendar-alt fa-fw post-meta-icon"></i><span class="post-meta-label">发表于</span><time class="post-meta-date-created" datetime="2025-10-11T16:39:32.613Z" title="发表于 2025-10-12 00:39:32">2025-10-12</time><span class="post-meta-separator">|</span><i class="fas fa-history fa-fw post-meta-icon"></i><span class="post-meta-label">更新于</span><time class="post-meta-date-updated" datetime="2025-10-12T07:23:02.332Z" title="更新于 2025-10-12 15:23:02">2025-10-12</time></span></div><div class="meta-secondline"><span class="post-meta-separator">|</span><span class="post-meta-pv-cv" id="" data-flag-title=""><i class="far fa-eye fa-fw post-meta-icon"></i><span class="post-meta-label">浏览量:</span><span id="busuanzi_value_page_pv"><i class="fa-solid fa-spinner fa-spin"></i></span></span></div></div></div></header><main class="layout" id="content-inner"><div id="post"><article class="container post-content" id="article-container"><hr>
<h1 id="1-C-style"><a href="#1-C-style" class="headerlink" title="1. C-style"></a>1. C-style</h1><figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#<span class="keyword">include</span> <span class="string">&lt;iostream&gt;</span></span></span><br><span class="line"><span class="meta">#<span class="keyword">include</span> <span class="string">&lt;ctime&gt;</span></span></span><br><span class="line"></span><br><span class="line"><span class="function"><span class="type">int</span> <span class="title">Generate_RandomNumber</span><span class="params">()</span></span></span><br><span class="line"><span class="function"></span>&#123;</span><br><span class="line">	<span class="built_in">srand</span>(<span class="built_in">time</span>(<span class="number">0</span>));</span><br><span class="line">	<span class="type">int</span> num = <span class="built_in">rand</span>()%<span class="number">100</span> + <span class="number">1</span>;</span><br><span class="line">	</span><br><span class="line">	<span class="keyword">return</span> num</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

<p><code>srand()</code> 用于生成伪随机数生成器 <code>PRNG</code> 的种子，不同的种子会生成不同的随机序列，这里引用 <code>ctime</code> 库提供了函数 <code>time()</code> ，用于获取当前（当入口参数为 <code>NULL</code> 时）系统时间戳作为随机种子，在每次程序编译的时候时间都不一样，所以能够保证生成的随机数也不一样。</p>
<p><code>rand()</code> 返回 <code>0 - RAND_MAX</code> 内的随机正整数，这个上限数值取决于编译器实现，在我的 64位 <em>Windows</em> 系统下，<code>stdlib</code> 库中定义</p>
<figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#<span class="keyword">define</span> RAND_MAX 0x7fff`</span></span><br></pre></td></tr></table></figure>

<p>即 <code>32767</code>。</p>
<p>如果需要进行范围限制，比如可以：</p>
<figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">rand</span>() % <span class="number">100</span></span><br></pre></td></tr></table></figure>

<p>这个取余的结果范围在 <code>0 - 99</code> ,也就是说 </p>
<figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">rand</span>() % N</span><br></pre></td></tr></table></figure>

<p>生成 <code>0 ~ (N-1)</code> 范围内的随机正整数。</p>
<hr>
<h1 id="2-C"><a href="#2-C" class="headerlink" title="2. C++"></a>2. C++</h1><p><em>C++</em> 的 <code>PRNG</code> 采用 <em>Mersenne Twister</em> 算法，通过引用库 <code>&lt;random&gt;</code> 来使用。</p>
<p><code>&lt;random&gt;</code> 提供了一种基于硬件噪声的随机数引擎 <code>std::random_device</code> 以及两种 <code>PRNG</code> 对象（同样也是随机数生成引擎），分别是 </p>
<ul>
<li><code>mt19937</code> - <code>32</code> 位无符号随机整型数序列 </li>
<li><code>mt19937_64</code> - <code>64</code> 位无符号随机整型数序列</li>
</ul>
<p>基于硬件噪声的引擎 <code>std::random_device</code> 不需要种子，因为它是通过访问系统熵池来生成随机数据的，但是速度比较慢，而且跨设备情景不稳定，每次也 <strong>只生成一个数据</strong>，所以更适合作为 <code>mt19937</code> 的随机种子来产生 <strong>随机数序列</strong>。 </p>
<p>在 <code>&lt;random&gt;</code> 库中，实现一个随机数的大致步骤就是：</p>
<ul>
<li>引擎生成随机数序列</li>
<li>用分布函数映射随机数范围</li>
<li>生成随机数</li>
</ul>
<figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#<span class="keyword">include</span> <span class="string">&lt;iostream&gt;</span></span></span><br><span class="line"><span class="meta">#<span class="keyword">include</span> <span class="string">&lt;random&gt;</span></span></span><br><span class="line"></span><br><span class="line"><span class="function"><span class="type">int</span> <span class="title">main</span><span class="params">()</span></span></span><br><span class="line"><span class="function"></span>&#123;</span><br><span class="line">    std::mt19937 RNum&#123;std::random_device&#123;&#125;()&#125;;       <span class="comment">// PRNG engine</span></span><br><span class="line">    </span><br><span class="line">    <span class="comment">/* also </span></span><br><span class="line"><span class="comment">    std::random_device rd;</span></span><br><span class="line"><span class="comment">    std::mt19937 RNum&#123;static_cast&lt;unsigned int&gt;(rd())&#125;</span></span><br><span class="line"><span class="comment">    */</span></span><br></pre></td></tr></table></figure>

<p>创建随机数引擎对象<code>RNUm</code>。</p>
<p><code>std::random_device</code> 基于硬件系统的随机噪声，将其生成的随机数传递给 <code>RNum()</code>，这样就为 <code>RNum</code> 提供了一个随机的种子。</p>
<figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">	<span class="function">std::uniform_int_distribution&lt;<span class="type">int</span>&gt; <span class="title">dist</span><span class="params">(<span class="number">1</span>, <span class="number">100</span>)</span></span>;</span><br><span class="line">	std::cout&lt;&lt; <span class="built_in">dist</span>(RNum)&lt;&lt;std::endl;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

<p><code>dist()</code> 是一个 <code>uniform_int_distribution</code> 类型的映射函数，上面这样写可以将 <code>RNum</code> 对应随机数序列映射到 <code>1 - 100</code> 的范围内，从而实现范围控制。</p>
<hr>
<h2 id="拓展："><a href="#拓展：" class="headerlink" title="拓展："></a>拓展：</h2><figure class="highlight cpp"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#<span class="keyword">include</span> <span class="string">&lt;iostream&gt;</span></span></span><br><span class="line"><span class="meta">#<span class="keyword">include</span> <span class="string">&lt;random&gt;</span></span></span><br><span class="line"></span><br><span class="line"><span class="function"><span class="type">int</span> <span class="title">main</span><span class="params">()</span></span></span><br><span class="line"><span class="function"></span>&#123;</span><br><span class="line">    std::mt19937 RNum&#123;std::random_device&#123;&#125;()&#125;;</span><br><span class="line">    std::uniform_real_distribution&lt;<span class="type">double</span>&gt;<span class="built_in">Dist</span>(<span class="number">114.514</span>, <span class="number">1919.810</span>);</span><br><span class="line"></span><br><span class="line">    <span class="keyword">for</span>(<span class="type">int</span> i=<span class="number">0</span>; i&lt;<span class="number">10</span>; i++)</span><br><span class="line">        std::cout&lt;&lt;<span class="built_in">Dist</span>(RNum)&lt;&lt;std::endl;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

<p>通过改变分布函数，也可以生成其他类型的随机数。</p>
</article><div class="post-copyright"><div class="post-copyright__author"><span class="post-copyright-meta"><i class="fas fa-circle-user fa-fw"></i>文章作者: </span><span class="post-copyright-info"><a href="http://jav1ki4n.github.io">i4N</a></span></div><div class="post-copyright__type"><span class="post-copyright-meta"><i class="fas fa-square-arrow-up-right fa-fw"></i>文章链接: </span><span class="post-copyright-info"><a href="http://jav1ki4n.github.io/2025/10/12/C%20%E4%B8%8E%20C++%20%E9%9A%8F%E6%9C%BA%E6%95%B0%E7%94%9F%E6%88%90/">http://jav1ki4n.github.io/2025/10/12/C%20%E4%B8%8E%20C++%20%E9%9A%8F%E6%9C%BA%E6%95%B0%E7%94%9F%E6%88%90/</a></span></div><div class="post-copyright__notice"><span class="post-copyright-meta"><i class="fas fa-circle-exclamation fa-fw"></i>版权声明: </span><span class="post-copyright-info">本博客所有文章除特别声明外，均采用 <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" target="_blank">CC BY-NC-SA 4.0</a> 许可协议。转载请注明来源 <a href="http://jav1ki4n.github.io" target="_blank">Fusyōn.</a>！</span></div></div><div class="tag_share"><div class="post-share"><div class="social-share" data-image="/img/i4N.png" data-sites="facebook,x,wechat,weibo,qq"></div><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/butterfly-extsrc@1.1.6/sharejs/dist/css/share.min.css" media="print" onload="this.media='all'"><script src="https://cdn.jsdelivr.net/npm/butterfly-extsrc@1.1.6/sharejs/dist/js/social-share.min.js" defer></script></div></div><nav class="pagination-post" id="pagination"><a class="pagination-related full-width" href="/2025/10/12/2025/" title="2025 月度记录 其九"><div class="cover" style="background: var(--default-bg-color)"></div><div class="info"><div class="info-1"><div class="info-item-1">上一篇</div><div class="info-item-2">2025 月度记录 其九</div></div><div class="info-2"><div class="info-item-1"> SeptemberSep.25th 补充了 C++ 中有关字符串的一些小知识： 传参时的空格问题 - std::ws 以及 cin.ignore() 作为入口参数时使用 std::string_view 来节省性能开销 了解了一下字面值 std::string_literal，一般可以直接将 C  风格字符串直接转为 string 对象，但我觉得可能不是很常用。     Sep.26th 补充了 C++ 中有关变量和运算的一些小知识：  静态转换 static_cast （对比强制转换） 常量表达式 constexpr 与 const 的适用场合，我暂时没想到我该怎么用。 位运算对象 bitset （不错）   了解了命名空间 namespace，包括其与子级的创建与调用。  前向声明 ( forward declartion ) 允许不定义函数就调用，但是包含这个函数定义的文件必须也参与编译。  inline 修饰符允许函数在单独的头文件中直接 定义， 并且被多个 cpp 文件调用。 在旧版本 C++ 中，这个修饰符的作用是将函数调用改为直接执行函数的代码段以节省开销，现代 ...</div></div></div></a></nav></div><div class="aside-content" id="aside-content"><div class="card-widget card-info text-center"><div class="avatar-img"><img src="/img/i4N.png" onerror="this.onerror=null;this.src='/img/friend_404.gif'" alt="avatar"/></div><div class="author-info-name">i4N</div><div class="author-info-description"></div><div class="site-data"><a href="/archives/"><div class="headline">文章</div><div class="length-num">6</div></a><a href="/tags/"><div class="headline">标签</div><div class="length-num">0</div></a><a href="/categories/"><div class="headline">分类</div><div class="length-num">0</div></a></div><a id="card-info-btn" target="_blank" rel="noopener" href="https://github.com/jav1ki4N"><i class="fab fa-github"></i><span>Github</span></a></div><div class="card-widget card-announcement"><div class="item-headline"><i class="fas fa-bullhorn fa-shake"></i><span>关于 / Aboout</span></div><div class="announcement_content">Ain't nothing new here</div></div><div class="sticky_layout"><div class="card-widget" id="card-toc"><div class="item-headline"><i class="fas fa-stream"></i><span>目录</span><span class="toc-percentage"></span></div><div class="toc-content"><ol class="toc"><li class="toc-item toc-level-1"><a class="toc-link" href="#1-C-style"><span class="toc-number">1.</span> <span class="toc-text">1. C-style</span></a></li><li class="toc-item toc-level-1"><a class="toc-link" href="#2-C"><span class="toc-number">2.</span> <span class="toc-text">2. C++</span></a><ol class="toc-child"><li class="toc-item toc-level-2"><a class="toc-link" href="#%E6%8B%93%E5%B1%95%EF%BC%9A"><span class="toc-number">2.1.</span> <span class="toc-text">拓展：</span></a></li></ol></li></ol></div></div><div class="card-widget card-recent-post"><div class="item-headline"><i class="fas fa-history"></i><span>最新文章</span></div><div class="aside-list"><div class="aside-list-item no-cover"><div class="content"><a class="title" href="/2025/11/01/%E4%BA%8C%E3%80%87%E4%BA%8C%E4%BA%94%20%E6%9C%88%E5%BA%A6%E8%AE%B0%E5%BD%95%20%E5%85%B6%E5%8D%81/" title="二〇二五 月度记录 其十">二〇二五 月度记录 其十</a><time datetime="2025-11-01T07:52:34.638Z" title="发表于 2025-11-01 15:52:34">2025-11-01</time></div></div><div class="aside-list-item no-cover"><div class="content"><a class="title" href="/2025/10/21/%E5%BE%AE%E6%9C%BA%E6%80%BB%E7%BB%93/" title="微机原理（LEGACY）">微机原理（LEGACY）</a><time datetime="2025-10-20T16:05:17.811Z" title="发表于 2025-10-21 00:05:17">2025-10-21</time></div></div><div class="aside-list-item no-cover"><div class="content"><a class="title" href="/2025/10/21/%E5%BE%AE%E6%9C%BA%E5%8E%9F%E7%90%86/" title="微机原理(LEGACY)">微机原理(LEGACY)</a><time datetime="2025-10-20T16:05:17.808Z" title="发表于 2025-10-21 00:05:17">2025-10-21</time></div></div><div class="aside-list-item no-cover"><div class="content"><a class="title" href="/2025/10/13/%E5%9C%A8%20Clion%20%E4%B8%AD%E4%BD%BF%E7%94%A8C%E4%B8%8EC++%E6%B7%B7%E5%90%88%E5%BC%80%E5%8F%91%20STM32/" title="在 Clion 中使用 C/C++ 混合开发 STM32">在 Clion 中使用 C/C++ 混合开发 STM32</a><time datetime="2025-10-13T12:23:15.899Z" title="发表于 2025-10-13 20:23:15">2025-10-13</time></div></div><div class="aside-list-item no-cover"><div class="content"><a class="title" href="/2025/10/12/2025/" title="2025 月度记录 其九">2025 月度记录 其九</a><time datetime="2025-10-12T06:25:58.373Z" title="发表于 2025-10-12 14:25:58">2025-10-12</time></div></div></div></div></div></div></main><footer id="footer"><div class="footer-other"><div class="footer-copyright"><span class="copyright">&copy;&nbsp;2025 By i4N</span><span class="framework-info"><span>框架 </span><a target="_blank" rel="noopener" href="https://hexo.io">Hexo 8.0.0</a><span class="footer-separator">|</span><span>主题 </span><a target="_blank" rel="noopener" href="https://github.com/jerryc127/hexo-theme-butterfly">Butterfly 5.5.1</a></span></div><div class="footer_custom_text">Le cadavre exquis boira le vin nouveau.</div></div></footer></div><div id="rightside"><div id="rightside-config-hide"><button id="readmode" type="button" title="阅读模式"><i class="fas fa-book-open"></i></button><button id="translateLink" type="button" title="简繁转换">繁</button><button id="darkmode" type="button" title="日间和夜间模式切换"><i class="fas fa-adjust"></i></button><button id="hide-aside-btn" type="button" title="单栏和双栏切换"><i class="fas fa-arrows-alt-h"></i></button></div><div id="rightside-config-show"><button id="rightside-config" type="button" title="设置"><i class="fas fa-cog"></i></button><button class="close" id="mobile-toc-button" type="button" title="目录"><i class="fas fa-list-ul"></i></button><button id="go-up" type="button" title="回到顶部"><span class="scroll-percent"></span><i class="fas fa-arrow-up"></i></button></div></div><div><script src="/js/utils.js?v=5.5.1"></script><script src="/js/main.js?v=5.5.1"></script><script src="/js/tw_cn.js?v=5.5.1"></script><div class="js-pjax"></div><script async data-pjax src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script></div></body></html>